package collection.list;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

/**
 * @author weim
 * @date 18-8-27
 *
 * 底层是数组
 * 非线程安全
 *
 * 扩容原理
 * newCapacity = oldCapacity + (oldCapacity >> 1); 右移 除以2 左移 乘以2  扩容了1.5倍
 * Arrays.copyOf(elementData, newCapacity);
 */
public class MyList {

    public static void main(String[] args) {
        //默认创建大小为10的数组
        List<String> list = new ArrayList<String>();
        //当然也可以自己制定
        List<String> list1 = new ArrayList<String>(20);

        list.add("a");
        list.add("b");
        list.add("c");

        Iterator<String> iterator = list.iterator();
        while(iterator.hasNext()) {
            System.out.println(iterator.next());
            //快速失败  在iterator遍历的时候，更改list结构，会抛出ConcurrentModificationException异常
            //list.add("d");
        }


        ListIterator<String> listIterator = list.listIterator();
        listIterator.add("d");
        System.out.println(listIterator.nextIndex());
        while(listIterator.hasNext()) {
            System.out.println(listIterator.next());
        }

        System.out.println(list);
    }

}
